 # 1.编程实现:定义一个类(Person),该类中有两个私有属性分别为姓名(name)和年龄(age)。
 # 定义构造方法,用于初始化数据成员。定义显示(display)方法,将姓名和年龄显示输出。
 # class Person:
 #     def __init__(self, name, age):
 #         self.__age = age
 #         self.__name = name
 #
 #     def display(self):
 #         print(self.__age, self.__name)
 #
 #
 # student = Person('张有泽', '18')
 # student.display()
 #
 # 18 张有泽
 #
 # 2.设计一个学生类,属性为姓名、学号、年龄、成绩。设计一个班级类,属性为班级代号、所有学生
 # 要求:实现向班级添加学生、删除学生、学生排序(按指定条件)、查询学生信息(姓名、学号等)。
 #
 # class student:
 #     def __init__(self, name, id, age, score):
 #         self.name = name
 #         self.id = id
 #         self.age = age
 #         self.score = score
 #
 # class classroom:
 #     def __init__(self, class_id):
 #         self.class_id = class_id
 #         self.student_list = []
 #
 #     def add_stu(self, student):   #添加学生
 #         self.student_list.append(student)
 #
 #     def del_stu(self, stu_id):
 #         for student in self.student_list:
 #             if student.id == stu_id:
 #                 self.student_list.remove(student)
 #                 return 1
 #             return -1
 #
 #     def sort_stu(self, key):
 #         self.student_list.sort(key=lambda student: getattr(student, key))
 #
 #     def find_stu(self, query_value):
 #         for student in self.student_list:
 #             if student.id == query_value:
 #                 print('查询到学生信息：姓名：', student.name, '学号：', student.id, '年龄：', student.age, '成绩：',
 #                       student.score)
 #                 return 1
 #             return -1
 #
 #     def out_stu(self):
 #         print(' 姓名 \t',  '学号\t','年龄\t','成绩\t')
 #         for student in self.student_list:
 #             print(student.name, '\t', student.id, '\t', student.age,'\t',
 #                   student.score)
 #
 #
 # stu1 = student('youze', '1', 23, 70)
 # stu2 = student('lili', '2', 24, 60)
 # stu3 = student('zimen', '3', 38, 62)
 # stu4 = student('liling', '4', 23, 89)
 # stu5 = student('san', '5', 24, 56)
 # stu6 = student('wangwu', '6', 19, 99)
 #  创建班级对象并添加学生
 # c1 = classroom('2024')
 # c1.add_stu(stu1)
 # c1.add_stu(stu2)
 # c1.add_stu(stu3)
 # c1.add_stu(stu4)
 # c1.add_stu(stu5)
 # c1.add_stu(stu6)
 #
 # c1.out_stu()
 #  删除一个学生
 # print('删除：',c1.del_stu('1'))
 #  对学生进行排序（按成绩）
 # c1.sort_stu('score')
 # print('成绩排序输出：')
 # c1.out_stu()
 #  查询学生信息
 # c1.find_stu('1')
 #
 #  姓名 	 学号	 年龄	 成绩
 # youze 	 1 	 23 	 70
 # lili 	 2 	 24 	 60
 # zimen 	 3 	 38 	 62
 # liling 	 4 	 23 	 89
 # san 	 5 	 24 	 56
 # wangwu 	 6 	 19 	 99
 # 删除： 1
 # 成绩排序输出：
 #  姓名 	 学号	 年龄	 成绩
 # san 	 5 	 24 	 56
 # lili 	 2 	 24 	 60
 # zimen 	 3 	 38 	 62
 # liling 	 4 	 23 	 89
 # wangwu 	 6 	 19 	 99
 #
 # 3..定义代表二维坐标系上某个点的 Point 类(包括x坐标和y坐标两个属性),为说类提供一个方法用于计算两个点之间的距离,再提供一个方法用于判断三个点组成的?角形是钝角、锐角还是直角三角形。
 # class Point:
 #     def __int__(self):
 #         self.__x=0
 #         self.__y=0
 #         self.__z=0
 #     def jisuan(x,y):
 #         return math.sqrt(math.pow(x,2)+math.pow(y,2))
 #     def panduan(x,y,z):
 #         if x+y<=z or x+z<=y or y+z<=x:
 #             return -1
 #         else:
 #             if math.pow(x, 2)+math.pow(y, 2)==math.pow(z, 2):
 #                 return 0
 #             elif  math.pow(x, 2)+math.pow(y, 2)<math.pow(z, 2):
 #                 return 1
 #             else:
 #                 return 2
 # d = Point
 # print(d.jisuan(3,4))
 # v = d.panduan(3,4,6)
 # if v==-1:
 #     print('不是三角形')
 # elif v==1:
 #     print('锐角')
 # else:
 #     print('钝角')
 #
 # 4.编程实现:自定义一个字典类 dictclass,并完成下面的功能。dict = dictclass({字典对象))
 # (1)删除某个 key。
 # (2)判断某个键是否在字典里。如果存在,返回键对应的值;不存在,则返回"not toumd"
 # (3)返回键组成的列表,返回类型为列表
 # (4)合并字典并返回由合并后字典的值组成的列表,返回类型为列表提示:update_dict({要合并的字典))。
 # class dictclass:
 #     def __init__(self, initial):
 #         self.data = initial
 #
 #      删除
 #     def del_dict(self, key):
 #         if key in self.data:
 #             del self.data[key]
 #             return 1   删除成功返回1
 #         else:   键不存在返回0
 #             return 0
 #
 #      查找
 #     def get_value(self, key):
 #         if key in self.data:
 #             return self.data[key]
 #         else:
 #             return 'not found'
 #
 #      获取
 #     def get_key(self):
 #         return list(self.data.keys())
 #
 #      增加
 #     def update_dict(self, dict1):
 #         self.data.update(dict1)
 #         return list(self.data.values())
 #
 #
 # d = dictclass({'a': 1, 'b': 2, 'c': 3, 'd': 4})
 # print(d.get_key())   返回键组成的列表
 # print(d.del_dict('a'))   删除key
 # print(d.get_key())   返回键组成的列表
 #
 # print(d.get_value('b'))   查找、返回键对应值
 #
 # dict1 = dictclass({'f': 7, 'g': 8, 'h': 9})
 # print(d.update_dict(dict1.data))
 #
 # 5.定义交通工具、汽车、火车、飞机4个类,其中交通工具类有 name 属性,move(self,distance)方法,
 # 调用该方法可显示该交通工具的名字及移动距离。汽车、火车、飞机类均为交通工具类的子类,其中汽车、火车类新增属性color,
 # 飞机类新增属性company,每个子类都重写了 move()方法,调用时输出 name、新增属性和移动距离。
 # 注意这些类的继承关系,为这些类提供构造器(构造方法)。
 # class vehicle:
 #     def __init__(self,name):
 #         self.name=name
 #         def move(self,distance):
 #             print('使用的交通工具是：',self.name,'移动的距离是：',distance)
 # class cars(vehicle):
 #     def __init__(self, name,color):
 #         super().__init__(name)
 #         self.color = color
 #
 #     def move(self,distance):
 #             print('使用的交通工具是：',self.name,'移动的距离是：',distance,'颜色为:',self.color)
 #
 # class trains(vehicle):
 #     def __init__(self, name,color):
 #         super().__init__(name)
 #         self.color = color
 #
 #     def move(self,distance):
 #             print('使用的交通工具是：',self.name,'移动的距离是：',distance,'颜色为:',self.color)
 #
 # class planes(vehicle):
 #     def __init__(self,name, company):
 #         super().__init__(name)
 #         self.company = company
 #
 #     def move(self,distance):
 #             print('使用的交通工具是：',self.name,'移动的距离是：',distance,'公司为:',self.company)
 #
 # car = cars('宝马','蓝色')
 # tra = trains('复兴号','绿色')
 # pla = planes('C919','china')
 #
 # car.move(200)
 # tra.move(2000)
 # pla.move(8908)
 #
 # 使用的交通工具是： 宝马 移动的距离是： 200 颜色为: 蓝色
 # 使用的交通工具是： 复兴号 移动的距离是： 2000 颜色为: 绿色
 # 使用的交通工具是： C919 移动的距离是： 8908 公司为: china
